home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / ole2book.zip / CHAP06.ZIP / CHAP06 / DATAUSER / DATAUSER.H < prev    next >
C/C++ Source or Header  |  1993-04-14  |  4KB  |  134 lines

  1. /*
  2.  * DATAUSER.H
  3.  *
  4.  * Definitions for an user of the Data objects for Chapter 6
  5.  *
  6.  * Copyright (c)1993 Microsoft Corporation, All Rights Reserved
  7.  *
  8.  * Kraig Brockschmidt, Software Design Engineer
  9.  * Microsoft Systems Developer Relations
  10.  *
  11.  * Internet  :  kraigb@microsoft.com
  12.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  13.  */
  14.  
  15.  
  16. #ifndef _DATAUSER_H_
  17. #define _DATAUSER_H_
  18.  
  19. #include <windows.h>
  20. #include <ole2.h>
  21. #include <ole2ver.h>
  22. #include <bookguid.h>
  23.  
  24.  
  25. //Menu Resource ID and Commands
  26. #define IDR_MENU                    1
  27.  
  28.  
  29. #define IDM_OBJECTUSEDLL                100
  30. #define IDM_OBJECTUSEEXE                101
  31. #define IDM_OBJECTDATASIZESMALL         102
  32. #define IDM_OBJECTDATASIZEMEDIUM        103
  33. #define IDM_OBJECTDATASIZELARGE         104
  34. #define IDM_OBJECTQUERYGETDATA          105
  35. #define IDM_OBJECTGETDATATEXT           106
  36. #define IDM_OBJECTGETDATABITMAP         107
  37. #define IDM_OBJECTGETDATAMETAFILEPICT   108
  38. #define IDM_OBJECTEXIT                  109
  39.  
  40. #define IDM_ADVISEMIN                   200
  41. #define IDM_ADVISETEXT                  (IDM_ADVISEMIN+CF_TEXT)
  42. #define IDM_ADVISEBITMAP                (IDM_ADVISEMIN+CF_BITMAP)
  43. #define IDM_ADVISEMETAFILEPICT          (IDM_ADVISEMIN+CF_METAFILEPICT)
  44. #define IDM_ADVISEGETDATA               300
  45. #define IDM_ADVISEREPAINT               301
  46.  
  47.  
  48. //DATAUSER.CPP
  49. LRESULT FAR PASCAL __export DataUserWndProc(HWND, UINT, WPARAM, LPARAM);
  50.  
  51.  
  52. class __far CImpIAdviseSink;
  53.  
  54.  
  55. /*
  56.  * Application-defined classes and types.
  57.  */
  58.  
  59. class __far CAppVars
  60.     {
  61.     friend LRESULT FAR PASCAL __export DataUserWndProc(HWND, UINT, WPARAM, LPARAM);
  62.     friend class CImpIAdviseSink;
  63.  
  64.     protected:
  65.         HINSTANCE       m_hInst;            //WinMain parameters
  66.         HINSTANCE       m_hInstPrev;
  67.         UINT            m_nCmdShow;
  68.  
  69.         HWND            m_hWnd;             //Main window handle
  70.         BOOL            m_fEXE;             //For tracking menu selection.
  71.  
  72.         LPADVISESINK    m_pIAdviseSink;     //Our CImpIAdviseSink
  73.         DWORD           m_dwConn;           //Advise connection
  74.         UINT            m_cfAdvise;         //Advise format
  75.         BOOL            m_fGetData;         //::GetData on data change?
  76.         BOOL            m_fRepaint;         //Repaint on data change?
  77.  
  78.         LPDATAOBJECT    m_pIDataSmall;
  79.         LPDATAOBJECT    m_pIDataMedium;
  80.         LPDATAOBJECT    m_pIDataLarge;
  81.  
  82.         LPDATAOBJECT    m_pIDataObject;     //Current selection
  83.         UINT            m_cf;
  84.         STGMEDIUM       m_stm;              //Current rendering we obtained
  85.  
  86.         BOOL            m_fInitialized;     //Did CoInitialize work?
  87.  
  88.     public:
  89.         CAppVars(HINSTANCE, HINSTANCE, UINT);
  90.         ~CAppVars(void);
  91.         BOOL FInit(void);
  92.         BOOL FReloadDataObjects(BOOL);
  93.         void TryQueryGetData(LPFORMATETC, UINT, BOOL, UINT);
  94.         void Paint(void);
  95.     };
  96.  
  97.  
  98. typedef CAppVars FAR * LPAPPVARS;
  99.  
  100.  
  101. #define CBWNDEXTRA              sizeof(LONG)
  102. #define DATAUSERWL_STRUCTURE     0
  103.  
  104.  
  105. //This lives with the application to get OnDataChange notifications.
  106.  
  107. class __far CImpIAdviseSink : public IAdviseSink
  108.     {
  109.     protected:
  110.         ULONG               m_cRef;      //Interface reference count.
  111.         LPAPPVARS           m_pAV;       //Back pointer to the application
  112.  
  113.     public:
  114.         CImpIAdviseSink(LPAPPVARS);
  115.         ~CImpIAdviseSink(void);
  116.  
  117.         STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
  118.         STDMETHODIMP_(ULONG) AddRef(void);
  119.         STDMETHODIMP_(ULONG) Release(void);
  120.  
  121.         //We only implement OnDataChange for now.
  122.         STDMETHODIMP_(void)  OnDataChange(LPFORMATETC, LPSTGMEDIUM);
  123.         STDMETHODIMP_(void)  OnViewChange(DWORD, LONG);
  124.         STDMETHODIMP_(void)  OnRename(LPMONIKER);
  125.         STDMETHODIMP_(void)  OnSave(void);
  126.         STDMETHODIMP_(void)  OnClose(void);
  127.     };
  128.  
  129.  
  130. typedef CImpIAdviseSink FAR * LPIMPIADVISESINK;
  131.  
  132.  
  133. #endif //_DATAUSER_H_
  134.